home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 3 / BBS in a box - Trilogy III.iso / Files / System7 tools / S / System 7 corner / HyperCard 2.1 < prev    next >
Encoding:
Text File  |  1991-06-25  |  24.6 KB  |  646 lines  |  [TEXT/PCXT]

  1.  
  2. Here are the known incompatibilities between HyperCard 2.0v2 and System 7.0.
  3. They have all been fixed in HyperCard 2.1.
  4.  
  5. - When you ask for the names of the system Help or Application menus from
  6.   HyperTalk, you get indecipherable strings.
  7. - "the menus" doesn't include the system Help and Application menus.
  8. - When you launch HyperCard and it can't find the Home stack, you must
  9.   select a Home stack from a standard file dialog.  If the stack you
  10.   select can't be opened (this can happen if it has already been opened
  11.   with write permission by another application) HyperCard will freeze
  12.   the machine.
  13. - If there are no user menus, the System 7 Help menu disappears when the
  14.   userLevel changes.  It comes back if a user menu is created from a script.
  15. - The HyperTalk commands that refer to files don't work with alias files.
  16.  
  17.  
  18.  
  19. When HyperCard 2.1 receives an Apple event, it sends an appleEvent
  20. message to the current card.  That means that you can respond to Apple
  21. events with HyperTalk scripts.  But before you try to write such scripts,
  22. there are some terms and conventions you should be familiar with.
  23.  
  24. The figure
  25. ----------
  26.  
  27. Apple events are like a package full of raw materials that arrive at a
  28. factory.  They have a return address on them -- in HyperTalk, a string of
  29. the form "Zone:Macintosh:Program".  They have an explanation of what their
  30. contents are for -- the class and id, which together consititute a verb,
  31. directing the receiver what do to with the package.  And of course there
  32. are the contents themselves -- the event parameters.
  33.  
  34. When you get one of these packages, you have to unpack it before you can
  35. make something out of the raw materials inside.  But you can't just rip
  36. into the package willy-nilly.  You have to ask for what you want, by name.
  37. "Give me the snod." "OK, now give me the lerd."  You unpack the contents,
  38. one by one, and make out of them whatever you're directed to make by the
  39. class and id.
  40.  
  41. The catch is that the package doesn't come with a packing list.  You're
  42. supposed to know what's in it -- you have a big book that tells you that
  43. whenever you get a package that you're supposed to make into a "wild plum",
  44. it's supposed to have a "bork", a "flam", and a "nitz" inside of it.  So
  45. you unpack the bork, the flam, and the nitz, and then you make the wild
  46. plum out of them and send it back.
  47.  
  48.     Apple event = package
  49.     class and id = terse directions for what to do with the package
  50.     parameters = contents of the package
  51.     keywords = names for each thing in the package
  52.  
  53.  
  54. The lesson
  55. ----------
  56.  
  57. In HyperTalk, when you handle the appleEvent message, you first look at
  58. the class and id, and they tell you what you're supposed to do with the
  59. event.  If it's an event that you know how to handle, you already know what
  60. the parameters are -- you've agreed with the sender in advance on what's
  61. supposed to be in it, or it's a standard Apple event defined in the
  62. voluminous standard documentation.  So you unpack the parameters with the
  63. "request" command, manipulate them, and send back what you made out of them
  64. with the "reply" command.
  65.  
  66. The script might look like this:
  67.  
  68.    on appleEvent class,id,sender
  69.      if class & id is "wildplum" then
  70.        request ae data with keyword "bork"
  71.        if the result is not empty then   -- probably "Not found"
  72.          reply error "Expected a bork but got none."
  73.          exit appleEvent
  74.        end if
  75.        put it into theBork
  76.        request ae data with keyword "flam"
  77.        .
  78.        .
  79.        .
  80.        .
  81.        get wildPlumMakingFunction(theBork,theFlam,theNitz)  -- process it
  82.        reply it  -- send back the reply
  83.      else pass appleEvent  -- we don't recognize this event; pass it on
  84.    end appleEvent
  85.  
  86.  
  87. Keywords
  88. --------
  89.  
  90. Think of a keyword for a piece of data in the package as its name -- it's
  91. the handle you need to pull it out of the package.  Asking for a parameter
  92. by keyword is the same as asking for a piece of raw material by name.
  93.  
  94. Keywords are arbitrary.  Whoever invents an Apple event makes them up, on
  95. the spot, out of the blue, to name the pieces of data that go along with
  96. the event.  The standard Apple events that have already been defined, along
  97. with the keywords for their required and optional parameters, are described
  98. in the Apple Event Registry.
  99.  
  100.  
  101. The direct object
  102. -----------------
  103.  
  104. Many Apple events arrive with just one piece of raw material in them, or
  105. one piece that's more important than the others.  By convention, this piece
  106. is given the keyword "----" and is referred to in the Apple event
  107. documenation as "the direct object" or "the direct parameter".  These are
  108. pretty ugly names, so in HyperTalk you can just call it the "data" and
  109. leave off the keyword specification -- HyperCard will know what you're
  110. talking about.
  111.  
  112.    request appleEvent data
  113.  
  114. This is equivalent to the following statement.
  115.  
  116.    request appleEvent data of keyword "----"
  117.  
  118. The direct object for the 'odoc' event is the list of documents to open.
  119. The direct object for the 'dosc' event is the script to execute.  And so
  120. on.
  121.  
  122.  
  123. Event attributes
  124. ----------------
  125.  
  126. Apple events come along with more than just an address, a verb, and pieces
  127. of data.  They also come with modifiers, or "attributes", which you can
  128. think of as "special handling instructions".  The class, id, and sender are
  129. all attributes also, but HyperCard gives you these automatically as
  130. parameters to the appleEvent message.  The timeout value, the transaction
  131. id, and the return id -- the identifier you put on the reply so that the
  132. sender knows, when his wild plum arrives, which package you made it out of
  133. -- are additional attributes.  If you need to look at these, the "request"
  134. command will let you.
  135.  
  136. You can get the return id,
  137.  
  138.    request appleEvent return id
  139.    request appleEvent data of keyword "rtid"  -- same thing, only uglier
  140.  
  141. the timeout value,
  142.  
  143.    request appleEvent data of keyword "timo"
  144.  
  145. the transaction id,
  146.  
  147.    request appleEvent data of keyword "tran"
  148.  
  149. and whatever else you think you need, as long as you know its keyword.  We
  150. have special forms of the request command for the class, id, sender, direct
  151. object, and return id -- for everything else, you have to tell HyperCard
  152. what you want by keyword.
  153.  
  154.    request appleEvent class   -- gives you the class attribute
  155.    request appleEvent id      -- gives you the id attribute
  156.    request appleEvent sender  -- gives you the sender attribute
  157.    request appleEvent data    -- gives you the direct object parameter
  158.    request appleEvent return id   -- gives you the return id attribute
  159.  
  160.  
  161. Kevin Calhoun
  162. jkc@apple.com
  163.  
  164. ***********
  165.  
  166. HyperCard 2.1 Release Notes for Developers
  167. Date: 23 May 91 22:50:05 GMT
  168. Organization: Apple Computer Inc, Cupertino, CA
  169.  
  170.  
  171. HyperCard 2.1 Release Notes
  172.  
  173.  
  174. Overview of this Release
  175. ------------------------
  176.  
  177. HyperCard 2.1 is the version of HyperCard recommended for use with System 7.0.
  178. It is also compatible with System 6.0.5 and System 6.0.7.
  179.  
  180.  
  181. Revisions for Support of System 7.0 Features
  182. --------------------------------------------
  183.  
  184. These revisions are grouped by their associated Toolbox Manager.
  185.  
  186.  
  187. Alias Manager
  188.  
  189.     When the Alias Manager is present, HyperCard 2.1 will call it to resolve
  190. alias files.  Therefore, the following commands will work properly with alias
  191. files.
  192.  
  193.     go to stack <alias file>
  194.     open <alias file> with <alias file>
  195.     open file <alias file>
  196.     write to file <alias file>
  197.     read from file <alias file>
  198.     picture <alias file>
  199.  
  200.     The XCMD callback GetFilePath will also resolve alias files. Therefore,
  201. XCMDs that use this callback to locate files will require no revision to work
  202. with alias files.  (The Picture XCMD is an example.)
  203.  
  204.     In addition, if HyperCard finds an alias file when looking for the Home
  205. stack on startup, the alias file will be resolved.
  206.  
  207.  
  208. Apple Event Manager
  209.  
  210.     When the AppleEvent Manager is present, HyperCard 2.1 will use it to process
  211. and send Apple events.  HyperCard will recognize and handle the standard Apple
  212. events for opening documents, printing documents, quitting, executing a script,
  213. and evaluating an expression.
  214.  
  215.     In addition, several of HyperTalk's built-in commands will have the added
  216. ability to send specific Apple events to other applications.
  217.  
  218.     Event class  Event ID       Related HyperTalk command
  219.     -----------  --------       -------------------------
  220.     'aevt'       'oapp'         open <application>
  221.     'aevt'       'odoc'         open <document> with <application>
  222.     'aevt'       'pdoc'         print <document> with <application>
  223.     'aevt'       'quit'         close <application>
  224.     'aevt'       'clos'         close <document> with <application>
  225.     'misc'       'dosc'         send <expr> to program <programExpr>
  226.     'misc'       'eval'         request <expr> of program <programExpr>
  227.  
  228.     If you want to launch another application or open a document with another
  229. application, use the HyperTalk command "open".  If you want to print a document
  230. with another application, use the command "print".  If you want to close a
  231. document in another application or quit another application, use the command
  232. "close".  If you want to execute a script or macro in another application, use
  233. the HyperTalk command "send".  If you want to evaluate an expression in another
  234. application, use the command "request".
  235.  
  236.     Please note that among these Apple events, only 'oapp', 'odoc', 'pdoc', and
  237. 'quit' are universally supported.  All other Apple events that HyperCard can
  238. send will be effective only if the target application includes specific support
  239. for them. For example,
  240.  
  241.     close "My Expense Report" with "FabCalc"
  242.  
  243. will work properly only if the application FabCalc supports the 'clos' Apple
  244. event.
  245.  
  246.     The "open", "print", and "close" commands will work only with applications
  247. that reside on the same machine as HyperCard.  The "send" and "request" commands
  248. will work with any linkable program running on the network. See "Determining the
  249. Target Program", below.
  250.  
  251. Sending scripts to other programs
  252.  
  253.     The send command in HyperTalk will send a "do script" Apple event from
  254. HyperCard to another application running remotely.  It can be used to send a
  255. script to any program that understands the standard 'dosc' Apple event. By
  256. default, HyperCard waits for a reply from the target program before continuing.
  257. However, you can specify that you don't want to wait for a reply.
  258.  
  259.     Examples:
  260.  
  261.     send "make waves" to program "De Anza 6/2nd:WildCraft:HyperCard"
  262.     send "build {project}" to program "MPW Shell" without reply
  263.  
  264. Evaluating expressions in other programs
  265.  
  266.     The request command in HyperTalk will send an "evaluate expression" Apple
  267. event from HyperCard to another application running remotely.  It can be used to
  268. send an expression to any program that understands the standard 'eval' Apple
  269. event.  The value of the expression will be put into the local variable "it".
  270.  
  271.     Examples:
  272.  
  273.     request "the name of this stack" of program "HyperCard"
  274.     request "{target}" from program "MPW Shell"
  275.  
  276. Handling failures
  277.  
  278.     The "send", "open", "print", "close", and "request" commands set "the
  279. result" as follows when they fail.
  280.  
  281. Condition                               the result
  282. ---------                               ---------------
  283. User canceled the "Link to program"     "Cancel"
  284.   dialog.
  285. Target program didn't handle event.     "Not handled by target program"
  286. Target program timed out.               "Timeout"
  287. Target program returned error string    the string
  288.   in reply.
  289. Target program returned error number    "Got error <errorNum>
  290.   in reply, or AESend returned some       when sending Apple( event"
  291.   other error.
  292.  
  293. Establishing program links
  294.  
  295.     When sending Apple events to another program, if HyperCard has not
  296. established a link with the target program, the user will be presented with a
  297. dialog, through which the link will be established.  If a link has already been
  298. established between HyperCard and the target program, the Apple event will be
  299. sent without further user interaction.
  300.  
  301. Determining the target program
  302.  
  303.     The target program for Apple events is specified by a string in the
  304. following format:
  305.  
  306.     zone:machine:program
  307.  
  308.     Examples:
  309.  
  310.     "Fifth Floor:Gizmo:MacWrite"
  311.     "Baby mac:MacWrite"
  312.         -- zone omitted; HyperCard assumes same zone
  313.     MacWrite
  314.         -- zone and machine omitted; HyperCard assumes same zone,
  315.             same machine
  316.  
  317.     HyperCard's address on the network is contained in the property, "the
  318. address".
  319.  
  320.     You can use the itemDelimiter property to parse program addresses. For
  321. example, given a string that specifies a target program, the following HyperTalk
  322. function will return the name of the program if you send it a colon as the
  323. delimiter and the string as the text.
  324.  
  325.     function lastHCItem delim,theText
  326.       put the itemDelimiter into savedDelimiter
  327.       set the itemDelimiter to delim
  328.       put the last item of theText into lastItem
  329.       set the itemDelimiter to savedDelimiter
  330.       return lastItem
  331.     end lastHCItem
  332.  
  333. Choosing a target program
  334.  
  335.     The answer command has been extended for use with the Program Linking
  336. dialog, so that scripters can allow users to select a program to link to.
  337.  
  338.     answer program prompt { of type <factorList> }
  339.  
  340. When used in this way, the answer command displays the PPC browser, from which
  341. the user can select any program running on any machine connected to the
  342. AppleTalk network.  A string representing the program the user selects is placed
  343. into the local variable "it".
  344.  
  345. Examples:
  346.  
  347.     answer program "Where did you say that program was again?"
  348.     answer program "Choose a spelling checker:" of type "Spellcheck"
  349.  
  350.     In addition,  a scripter can determine which programs are running on the
  351. same machine as HyperCard by examining the new HyperTalk function, "the
  352. programs".  It returns a return-delimited list of all the linkable programs
  353. currently running on the same machine as HyperCard.
  354.  
  355. Handling Apple events
  356.  
  357.     When HyperCard receives an Apple event, it will send a new HyperTalk system
  358. message, "appleEvent", to the current card, along with parameters that enable a
  359. script to determine the class, id, and the sender of the Apple event.  For
  360. example, when the Finder sends HyperCard an Apple event of class 'aevt' and id
  361. 'odoc', HyperCard sends the HyperTalk message "appleEvent aevt,odoc,Finder" to
  362. the current card.
  363.  
  364.     A script that handles an appleEvent message can gather the parameters of the
  365. Apple event by using the new HyperTalk command "request".
  366.  
  367.     request appleEvent data { [ of | with ] keyword <expr> }
  368.  
  369. This command puts the parameter or attribute with the specified keyword into the
  370. local variable "it".  For example, you can obtain a parameter of keyword "errs",
  371. the standard Apple event keyword for an error string, as follows:
  372.  
  373.     request appleEvent data with keyword "errs"
  374.     put it into errorString
  375.  
  376. If there is no attribute or parameter with the keyword you specify, HyperCard
  377. sets the result to "Not found".
  378.  
  379.     If you don't supply a keyword, HyperCard assumes you're requesting the
  380. direct object of the Apple event, which is defined by the Apple event manager as
  381. the parameter with keyword "----".  The request command also supports several
  382. special cases for important attributes of Apple events:
  383.  
  384.     request appleEvent class
  385.     request appleEvent id
  386.     request appleEvent sender
  387.     request appleEvent return id
  388.  
  389.     HyperCard will attempt to convert all the Apple event parameters to strings,
  390. for use in HyperTalk.  The Apple event manager automatically handles the
  391. conversion of numerical forms to strings; HyperCard installs coercion handlers
  392. for alias records, return ids, process serial numbers, target ids, class and id
  393. types, and lists.
  394.  
  395.     If an incoming Apple event specifies that user action is not permissible,
  396. the global property lockErrorDialogs will automatically be set to TRUE (see
  397. "Error Handling", below).  The scripter can override this setting.
  398.  
  399.     Example:  a scripter defines an event of class 'WILD' and id 'cnvt' as a
  400. request to convert a 1.2.5 stack to the 2.0 file format.  The direct object of
  401. the Apple event is defined to be the pathname of the stack.  The following
  402. script will do the trick.
  403.  
  404.     on appleEvent eventClass,eventID,sender
  405.       if eventClass & eventID is not "WILDcnvt"
  406.       then pass appleEvent
  407.       else
  408.         request appleEvent data
  409.         if it is empty then exit appleEvent
  410.         go to stack it
  411.         if the result is not empty then exit appleEvent
  412.  
  413.         if there is a menuItem "Convert Stack..." in menu "File"
  414.         then doMenu "Convert Stack..." without dialog
  415.       end if
  416.     end appleEvent
  417.  
  418.     Example:  when a stack is opened from the Finder while HyperCard is running,
  419. HyperCard 2.1 will open the stack in a new window.  This behavior is different
  420. from previous versions of HyperCard, which would go to the stack in the
  421. currently active window.  If you prefer the old behavior, you can put the
  422. following script in your Home stack.
  423.  
  424.     on appleEvent eventClass,eventID,sender
  425.       if eventClass & eventID is not "aevtodoc"
  426.       then pass appleEvent
  427.       else
  428.         request appleEvent data
  429.         put line 1 of it into stackToOpen
  430.         go to stack stackToOpen
  431.       end if
  432.     end appleEvent
  433.  
  434.     If HyperCard receives the appleEvent message, either because it was not
  435. intercepted by a script or because it was passed to it by a script, HyperCard
  436. will check whether the current Apple event is of the types it knows how to
  437. respond to, and if so, will treat it appropriately.  HyperCard 2.1 will
  438. recognize the following standard Apple events: 'odoc', 'pdoc', 'quit', 'dosc',
  439. and 'eval'.
  440.  
  441.     HyperCard responds to the 'odoc' event by checking whether the specified
  442. files are stacks and, if so, opening them, each in a new window.
  443.  
  444.     HyperCard responds to the 'pdoc' event by checking whether the specified
  445. files are stacks and, if so, opening them one at a time in a new window,
  446. printing them, and closing them again.
  447.  
  448.     HyperCard responds to the 'quit' event just as it would if "Quit HyperCard"
  449. were chosen from the File menu.
  450.  
  451.     HyperCard responds to a 'dosc' event by compiling and executing the
  452. HyperTalk statements sent to it as the direct object of the event.
  453.  
  454.     HyperCard responds to an 'eval' event by evaluating the expression sent to
  455. it as the direct object of the event and putting the value into the direct
  456. object of the reply.
  457.  
  458. Replying to Apple events
  459.  
  460.     Scripters can reply to Apple events from HyperTalk with a new command,
  461. "reply".
  462.  
  463.     reply <expr> { with keyword <expr> }
  464.  
  465. If you don't specify a keyword for the reply parameter, the parameter will
  466. become the direct parameter of the reply.  If you wish to return an error
  467. string, you can use the following form of the reply command:
  468.  
  469.     reply error <expr>
  470.  
  471. This is equivalent to:
  472.  
  473.     reply <expr> with keyword "errs"
  474.  
  475.     The reply event is sent when the chain of execution is complete.
  476.  
  477.     For example, the following script will handle Apple events of class 'WILD'
  478. and type 'defn' by searching for a string in a background field named "Glossary
  479. Entry" and returning the contents of a background field named "Definition".
  480.  
  481.     on appleEvent eventClass,eventID,sender
  482.       if eventClass is "WILD" and eventID is "defn" then
  483.         request appleEvent data
  484.         find it in field "Glossary Entry"
  485.         if the result is empty  -- successful find
  486.         then reply field "Definition"
  487.         else reply error "Not found"
  488.       else pass appleEvent
  489.     end appleEvent
  490.  
  491. The "request" and "reply" commands set the result to "No current Apple( event."
  492. when there is no current Apple event to handle.
  493.  
  494.  
  495. Miscellaneous Revisions
  496. -----------------------
  497.  
  498. Menus
  499.  
  500.     When you ask for the names of the Apple, Help, and Application menus from
  501. HyperTalk, you get "Apple", "System Help", and "Application", respectively.
  502.  
  503. Error Handling
  504.  
  505.     In order to execute scripts without interaction with the user, as well as to
  506. provide a better means for testing HyperCard's error messages, it's now possible
  507. to lock error dialogs and to put HyperTalk into a "quiet mode" for script
  508. execution.  When HyperTalk encounters an error while in "quiet mode", it aborts
  509. execution of pending scripts just as it normally would, but instead of
  510. displaying a dialog with an error message, it sends a "errorDialog" message to
  511. the current card with the error message as its parameter.  This message
  512. substitutes for the first "idle" message that would be sent in normal mode after
  513. HyperTalk cleans up and HyperCard returns to its main event loop.
  514.  
  515.     Example:
  516.  
  517.     set lockErrorDialogs to TRUE  -- puts HyperTalk into "quiet mode"
  518.     lock error dialogs  -- an alternate form
  519.     unlock error dialogs
  520.  
  521. When HyperCard receives an Apple event for which the sender has specified that
  522. no user interaction is allowed, it will automatically set lockErrorDialogs to
  523. TRUE before handling the event.
  524.  
  525. Determining which version of System Software is running
  526.  
  527.     A new function has been added to HyperTalk, "the systemVersion".  It returns
  528. the version of system software is running in a decimal string.  For example, it
  529. will return 6.07 instead of 6.0.7, to allow scripters to use it with HyperTalk's
  530. arithmetic operators.
  531.  
  532. Specifying Windows
  533.  
  534.     You can now refer to windows by number and by id as well as by name.
  535. Therefore, the following commands are now valid.
  536.  
  537.     get the id of the card window
  538.     set the loc of window 1 to 50,50
  539.     hide last window
  540.  
  541.     Both the Picture and Palette XCMDs now send the id of a newly created window
  542. as an additional parameter to its open message.  For example, after the Picture
  543. XCMD creates a new window, it sends the following message to the current card:
  544.    
  545.     openPicture <name of window>,<id of window>
  546.  
  547. Read and Write
  548.  
  549.     The HyperTalk "read" and "write" commands have been enhanced.  The following
  550. examples are now valid.
  551.  
  552.     read from file "Fred" at 100 for 12
  553.     read from file "Fred" until end  -- 'eof' works too
  554.     write myVar to file "Fred" at 200
  555.     write moreStuff to file "Fred" at end  -- 'eof' works too
  556.  
  557. In addition, the 16K limit on the amount of text that could be read at once has
  558. been removed.  If the amount of text you ask for won't fit in memory, HyperCard
  559. sets the result to "Not enough memory to read from file."
  560.  
  561. Getting the internal modem for the Portable to work with "dial"
  562.  
  563.     A new global property, "the dialingTime", has been added, especially for
  564. users of the internal modem for the Macintosh Portable.  It determines how long
  565. HyperCard waits, in ticks, after sending the dial string, before closing the
  566. serial connection with the modem.   The default is 180 (3 seconds).
  567.  
  568. Owners
  569.  
  570.     Windows and cards now have an "owner" property.  For windows, the owner is
  571. determined as follows.
  572.  
  573.     Creator                   Owner
  574.     ----------                ----------
  575.     HyperCard                 "HyperCard"
  576.     desk accessory or driver  "System"
  577.     XCMD                      the name of the XCMD
  578.     anything else             "Unknown"
  579.  
  580.     The owner of a card is the name of its background.
  581.  
  582. More Parameters Available
  583.  
  584.     The parameters for the "start", "stop", and "set" commands are now available
  585. within overriding handlers.
  586.  
  587.  
  588. Summary
  589. -------
  590.  
  591.     New messages:  appleEvent, errorDialog
  592.     New commands:  request, reply
  593.     New functions:  programs(), systemVersion()
  594.     New properties:  the address, the itemDelimiter, the lockErrorDialogs, the
  595. dialingTime, the owner
  596.     New constants:  comma, colon
  597.  
  598.     Enhanced commands: open, print, close, send, read, write, answer, lock,
  599. unlock, set, start, stop
  600.  
  601.  
  602. ******
  603.  
  604. Subject: Properties for windows in HyperCard 2.1
  605. Date: 21 May 91 00:02:10 GMT
  606.  
  607.  
  608. In HyperCard 2.1, all windows have the following properties:
  609.  
  610.   loc      (or "location")
  611.   visible
  612.   name     (new for windows in 2.1)
  613.   number   (new for windows in 2.1; given in front-to-back order)
  614.   id       (new for windows in 2.1)
  615.   owner    (new in 2.1)
  616.  
  617. Numbers and IDs for windows were added to make it possible for scripters to
  618. distinguish between two windows with the same name.  Now that they've been
  619. added, there are four ways to specify built-in windows.  For example:
  620.  
  621.    show the card window
  622.    show window <the name of the card window>
  623.    show window <the number of the card window>
  624.    show window id <the id of the card window>
  625.  
  626. And there are three ways to specify all other windows -- by name, by number, and
  627. by id.  All of the different ways of referring to windows are interchangeable.
  628. You can use them with the commands get, set, send, close, hide, and show, with
  629. the number function, and in property expressions.
  630.  
  631. In order to make the ID of a newly created Picture window available for use by
  632. scripters, we've added a second parameter to the "openPicture" message -- the
  633. window ID.  We've done the same thing for the Palette XCMD, which sends an
  634. "openPalette" message when it creates a new window.
  635.  
  636. The owner property will be useful for people managing large numbers of windows.
  637. It's "HyperCard" for any of HyperCard's built-in windows, "System" for windows
  638. owned by desk accessories or drivers, the name of of the external that created
  639. the window for external windows, and "Unknown" for everything else.
  640.  
  641. Kevin Calhoun
  642. jkc@apple.com
  643.  
  644.  
  645.  
  646.